Adaptive filtering using fast affine projection adaptation

ABSTRACT

A method of adaptive filtering using fast affine projection (FAP) that allows for direct solution of the projected error vector from the autocorrelation matrix using a backward and forward recursion technique or LDL T  factorization of the autocorrelation matrix followed by forward substitution, scaling and backward substitution. The method results in less computational complexity in the implementation, while still having good stability and fast convergence.

FIELD OF THE INVENTION

The present invention relates generally to adaptive filtering. More particularly, the present invention relates to a fast affine projection method for adaptive filtering.

BACKGROUND OF THE INVENTION

Adaptive filtering is a digital signal processing (DSP) technique widely used in technical areas such as echo cancellation, noise cancellation, channel equalization, and system identification, and in telecom products, such as network echo cancellers, acoustic echo cancellers for full-duplex hands-free telephones and audio conferencing systems, active noise control, data communications systems, hearing aids, etc.

An adaptive filter can be characterized by its topology and its adatation algorithm or method. The choice of the adaptation algorithm in a specific adaptive filtering system directly affects the performance of the system.

Simple and stable, the normalized least mean square (NLMS) adaptation algorithm is now most widely used as the work horse in the industry. While used with a certain degree of success, the NLMS intrinsically converges slowly with colored training signals, like speech, which are most frequently encountered in telecommunications.

Thus, the search for adaptation algorithms that converge quickly and remain robust, stable, and simple is a very active research area. Of those that have been proposed, the recursive least squares (RLS) adaptation algorithm (see e.g. Simon Haykin, Adaptive Filter Theory, Fourth Edition, Prentice Hall, September 2001) converges most quickly, but is in most cases too complicated to be implemented on a commercial low-cost digital signal processor (DSP) and suffers from numerical problems.

In 1995, a very promising adaptation algorithm, the fast affine projection (FAP), was proposed (see e.g. Gay et al. (Acoustic Research Department, AT&T Bell Laboratories), “The Fast Affine Projection Algorithm”, Proceedings of the lnternational Conference on Acoustics, Speech, and Signal Processing, pp. 3023-3026, May 1995; and Tanaka et al. (NTT Human Interface Laboratories), “Fast Projection Algorithm and Its Step Size Control”, Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, pp. 945-948, May 1995). FAP is a simplified version of the more complicated affine projection algorithm (APA), and offers a user-selectable trade-off between the RLS and the NLMS algorithms. With colored training signals such as speech, the FAP converges almost as quickly as the RLS and can be only marginally more complex than the NLMS.

However, the originally proposed FAP algorithm has an intrinsic numerical issue—it collapses within a short period of time, even with floating-point calculations. As discussed by the present inventor in “A Stable Fast Affine Projection Adaptation Algorithm Suitable for Low-Cost Processors,” Proceedings of the International Confelence on Acoustics, Speech, and Signal Processing, pp. I-360-I-363, June 2000, this results from the accumulation of finite precision numerical errors in a linear system solving process associated with the FAP.

Thus, a key element in a FAP algorithm is the method used to solve the linear system; the choice of which determines the stability and robustness of the whole FAP algorithm. Many researchers in the academic world have been looking for stable, robust, yet simple approaches ever since the FAP algorithm was proposed. However, no completely satisfactory solutions have been found so far. The proposed approaches are either impractical to implement, give approximate solutions, are too complicated, or are not generally applicable.

Therefore, there is a need for improved adaptive filtering methods that are stable and simple, while providing fast convergence and reliable results.

SUMMARY OF THE INVENTION

It is an object of the present invention to obviate or mitigate at least one disadvantage of previous adaptive filtering techniques using fast affine projection.

In a first embodiment, the present invention provides a method of adaptive filtering using a fast affine projection adaptive filter. The method comprises steps of: initializing adaptive filter coefficients of the filter; updating the adaptive filter coefficients; and repeating the updating step as desired. The updating is accomplished by setting a normalized step size; determining autocorrelation matrix coefficients of an autocorrelation matrix R _(N) from a reference input signal; directly determining a projected error vector ε _(N)(n+1) by solving an N-th order positive-definite system of linear equations R _(N) ε(n+1)=e _(N)(n+1) using a backward recursion, followed by a forward recursion, on a known projected error vector ε _(N)(n), where e _(N)(n+1) is a pre-fixed, one position down shifted version of the current output signal vector e _(N)(n) scaled in accordance with the normalized step size; and updating the adaptive filter coefficients in accordance with coefficients of the projected error vector.

In a further embodiment, the updating is accomplished by determining autocorrelation matrix coefficients of an autocorrelation matrix R _(N) from a reference input signal; directly determining a projected error vector ε _(N)(n) by solving an N-th order positive-definite system of linear equations R _(N) ε(n)=e _(N)(n) using an LDL^(T) factorization of the autocorrelation matrix and solving the system of linear equations by forward substitution, scaling, and back substitution; and updating the adaptive filter coefficients in accordance with the projected error vector.

The normalized step size can be greater than or equal to 0 and less than or equal to 1. Certain parts of the updating step can be repeated as little as once every N sampling intervals without significantly compromising performance of the adaptive filter. The method is particularly suited for such applications as echo cancellation, noise cancellation, and channel equalization.

Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:

FIG. 1 is a block diagram of an adaptive echo cancellation system;

FIG. 2 is a block diagram illustrating the FIR transversal topology of an FIR adaptive filter of the present invention;

FIG. 3 is a graph comparing the complexity of FAP algorithms; and

FIG. 4 is a graph comparing the complexity of FAP algorithms.

DETAILED DESCRIPTION

A simplified block diagram of an adaptive echo cancellation system 10 with an embedded adaptive filter 100 is shown in FIG. 1. x(n), a digitally sampled far-end signal, or reference signal, where n-is the time index, is supplied to the adaptive filter 100 and to the echo path 14, producing an unwanted signal u(n) that is the echo of x(n) through the echo path 14. The perceived near-end signal, d(n), is a sum of the wanted near-end signal s(n), an unwanted u(n), and probably some noise, through summer 16. An echo estimate y(n) from the adaptive filter 100 is subtracted from the perceived near end signal at summer 18 to provide the echo canceller's output e(n). The goal is to let the adaptive filter 100 mimic the echo path 14 so that it produces an output y(n) that is very close to u(n). Therefore, the latter is largely cancelled by the former, and e(n) resembles s(n). Since the echo path 14 can vary over time, the adaptive filter 100 must be able to continuously learn, or adapt to, the new echo path.

Note that, depending on the particular applications, the terms “far-end” and “near-end” may need to be interchanged. For example, with a network echo canceller in a telephone terminal, x(n) in FIG. 1 is actually the near-end signal to be transmitted to the far-end, and d(n) is the signal received from the telephone line connected to the far-end. Although the terminology herein is based on the assumption that x(n) is the far-end signal and d(n) is the signal perceived at the near-end, i.e., the case with an acoustic echo cancellation system in a telephone terminal or a network echo cancellation system in a line card, it is solely for convenience and all systems and methods described herein can be applied to applications with the alternate terminology.

The following conventions in linear algebraic representation are used throughout the following description. Single-underscored symbols, such as d(n) and X(n), stand for column vectors, and double-underscored symbols, like R, are matrices. A superscript T stands for the transposition of a matrix or vector. A symbol without an underscore denotes a scalar. A subscript, if any, of a matrix or vector indicates the dimension of the array, e.g. X _(N) is an N vector and R _(N) an N×N square matrix. Subscripts of scalars are merely indices. If X _(N) is an N vector, then {overscore (X)}_(N−1) stands for an N−1 vector consisting of the N−1 upper most elements of X _(N) and {tilde over (X)}_(N−1) stands for an N−1 vector consisting of the N−1 lower most elements of X _(N).

The most common topology of the adaptive filter 100 of FIG. 1 is a finite impulse response (FIR) transversal filter, as shown in FIG. 2, where {w₀(n), w₁(n), . . . , w_(L−1)(n)} are coefficients of the adaptive filter. This structure is assumed thoughout the description.

Expressing FIG. 1 and FIG. 2 mathematically, L-dimensional column vectors $\begin{matrix} {{\underset{\_}{X}(n)} \equiv {\begin{bmatrix} {x(n)} \\ {x\left( {n - 1} \right)} \\ \ldots \\ {x\left( {n - L + 1} \right)} \end{bmatrix}\quad{and}\quad{\underset{\_}{W}(n)}} \equiv \begin{bmatrix} {w_{0}(n)} \\ {w_{1}(n)} \\ \ldots \\ {w_{L - 1}(n)} \end{bmatrix}} & (1) \end{matrix}$ are defined as the reference input vector and the adaptive filter coefficient vector, respectively. In Eq. (1), L is the length of the adaptive filter 100. The convolution and subtraction of the signals, which derive the output of the adaptive echo cancellation system 10, can then be expressed as $\begin{matrix} {{{e(n)} \equiv {{d(n)} - {y(n)}}} = {{{d(n)} - {\sum\limits_{l = 0}^{L - 1}\quad{{w_{l}(n)}{x\left( {n - 1} \right)}}}} = {{d(n)} - {{{\underset{\_}{X}}^{T}(n)}{\underset{\_}{W}(n)}}}}} & (2) \end{matrix}$ where the superscript “T” is the transposition of a vector or matrix.

The particular adaptation method chosen determines the manner in which the filter coefficients, i.e., {w₀(n), w₁(n), . . . , w_(L−1)(n)} or W(n), are determined. Adaptation methods of choice should be stable, robust, fast-learning (or converging), and simple to implement.

Certain well known prior art adaptation methods will be now discussed for comparison to the ones of the present invention.

As the work horse in the telecom industry, the normalized mean square (NLMS) method updates the coefficient vector W(n) based on the knowledge of the current system performance, i.e. $\begin{matrix} {{{\underset{\_}{W}\left( {n + 1} \right)} = {{\underset{\_}{W}(n)} + {2\quad{\mu(n)}{e(n)}{\underset{\_}{X}(n)}}}}{{\mu(n)} = \frac{\alpha}{{{{\underset{\_}{X}}^{T}(n)}{\underset{\_}{X}(n)}} + \delta}}} & (3) \end{matrix}$ In Eq. (3), the positive number a is the normalized step size, μ(n) is an adaptation step size which controls the rate of adjustment to the coefficients, and δ, being a small positive number, prevents μ(n) from becoming too big when there is little or no reference signal x(n). The computations required by an NLMS filter can be as low as 2L+2 multiply and accumulate (MAC) operations and 1 division (DIV) per sampling interval.

A second adaptation method, the affine projection (AP) method is a generalization of the NLMS. With N being the so-called projection order, the following can be defined: $\begin{matrix} {{{{\underset{\_}{d}(n)} \equiv \begin{bmatrix} {d(n)} \\ {d\left( {n - 1} \right)} \\ \cdots \\ {d\left( {n - N + 1} \right)} \end{bmatrix}},{{\underset{\_}{e}(n)} \equiv \begin{bmatrix} {e(n)} \\ {e\left( {n - 1} \right)} \\ \cdots \\ {e\left( {n - N + 1} \right)} \end{bmatrix}_{\underset{\_}{W}{(n)}}},{{\xi(n)} \equiv \begin{bmatrix} {x(n)} \\ {x\left( {n - 1} \right)} \\ \cdots \\ {x\left( {n - N + 1} \right)} \end{bmatrix}}}{and}} & (4) \\ \begin{matrix} {{\underset{\_}{\underset{\_}{X}}(n)} \equiv \left\lbrack {{{\underset{\_}{X}(n)}{\underset{\_}{X}\left( {n - 1} \right)}\quad\ldots\quad{\underset{\_}{X}\left( {n - N + 1} \right)}} =} \right.} \\ {\left\lbrack {{\underset{\_}{\xi}(n)}{\underset{\_}{\xi}\left( {n - 1} \right)}\quad\ldots\quad{\underset{\_}{\xi}\left( {n - L + 1} \right)}} \right\rbrack^{T}} \\ {= \begin{bmatrix} {x(n)} & {x\left( {n - 1} \right)} & \cdots & {x\left( {n - N + 1} \right)} \\ {x\left( {n - 1} \right)} & {x\left( {n - 2} \right)} & \cdots & {x\left( {n - N} \right)} \\ \vdots & \vdots & \quad & \vdots \\ {x\left( {n - L + 1} \right)} & {x\left( {n - L} \right)} & \cdots & {x\left( {n - N - L + 2} \right)} \end{bmatrix}} \end{matrix} & (5) \end{matrix}$ where, d(n) and e(n) are N-dimensional vectors, and X(n) is an L×N matrix. Since N is usually much less than the adaptive filter length L, X(n) is a “portrait,” rather than “landscape,” matrix. Note that e(n) in Eq. (4) is the a priori error vector—all its elements are obtained with the weight vector equal to W(n), as indicated in Eq. (6) below. Thus, the convolution and subtraction according to FIG. 1 results in: e (n)= d (n)− X ^(T)(n) W (n)  (6) where W(n) is defined in Eq. (1). Updating is achieved by: R (i n)=X ^(T)(n) X (n)+δ I ε(n)=R ⁻(n) e (n) W(n+1)= W (n)+α X (n)ε(n)  (7) where I is the N×N identity matrix, the input auto-correlation matrix R(n) is symmetric and positive-definite, and α and δ play similar roles as they do in Eq. (3). α is a normalized step size satisfying αε[0,1]. δ is a regularization factor that prevents the auto-correlation matrix R(n) from becoming ill-conditioned or even rank-deficient, causing instability of the algorithm. It can be seen that an N×N matrix inversion operation, or solving an N-th order symmetric positive-definite linear system, is needed in each sampling interval with the AP filter.

The AP filter offers a very good convergence property but is quite computationally expensive. It needs, in each sampling interval, 2LN+O(N²) MACs (see e.g. Gay et al. (Acoustic Research Department, AT&T Bell Laboratories), “The Fast Affine Projection Algorithm”, Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, pp. 3023-3026, May 1995). For example, choosing N equal to 5 makes the APA more than five times as complex as the NLMS.

Since the AP filter is impractically expensive computationally, certain simplifications have been suggested (see e.g. Tanaka et al. (NTT Human Interface Laboratories), “Fast Projection Algorithm and Its Step Size Control,” Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, pp. 945-948, May 1995, and U.S. Pat. No. 5,428,562 to Gay, the contents of which are incorporated herein by reference), to arrive at the so-called fast affine projection (FAP) filter. Note that here the “F,” for “fast,” means it saves computations or is computationally less expensive, not that it converges faster. In fact by adopting these simplifications, the performance indices, including the convergence speed, will slightly degrade.

Briefly, the FAP filter consists of adopting an approximation $\begin{matrix} {{{\underset{\_}{e}(n)} \approx \begin{bmatrix} {e(n)} \\ {\left( {1 - \alpha} \right){\underset{\_}{\overset{\_}{e}}\left( {n -} \right)}} \end{bmatrix}} = \begin{bmatrix} {e(n)} \\ {\left( {1 - \alpha} \right){e\left( {n - 1} \right)}} \\ {\left( {1 - \alpha} \right)^{2}\left( {n - 2} \right)} \\ \vdots \\ {\left( {1 - \alpha} \right)^{N - 1}{e\left( {n - N + 1} \right)}} \end{bmatrix}} & (8) \end{matrix}$ and certain simplifications to reduce the computational load, which are carried through to the present invention. In Eq. (8), {overscore (e)} (n) is an N−1 vector consisting of the N−1 upper most elements of the N vector e (n). To reduce the computational load, the approximation Eq. (8) uses a posteriori errors to replace the a priori ones in Eq. (4); and a matrix inversion to solve the N-th order symmetric positive-definite linear system in Eq. (7)

Focus in the prior art has been primarily on the solution to the N-th order symmetric positive-definite linear system as this is a key issue with the FAP filter, and is the focus of the present invention. A number of prior art solutions of the N-th order symmetric positive-definite linear system in Eq. (7) will now be discussed.

The originally proposed FAP filter uses a so-called “sliding windowed” fast recursive least squares (FRLS) approach to solve the N-th order symmetric positive-definite linear system in Eq. (7), as described in U.S. Pat. No. 5,427,562, to recursively find the solution. This requires a total computational load of 2L+20N MACs and 5 DIVs per sampling interval, and is very difficult and memory-intensive to implement (see e.g. Oh et al. (Texas Instruments and The University of Texas), “A Fast Affine Projection Algorithm for an Acoustic Echo Cancellation Using a Fixed-Point DSP Processor,” Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, Vol. 5, pp. 4121-4124, 1997; Liu et al. (Bell-Northern Research and INRS-Télécommunications, Université du Québec), “On the Use of a Modified Fast Affine Projection Algorithm in Subbands for Acoustic Echo Cancellation,” Proceedings of 1996 IEEE Digital Signal Processing Workshop, pp. 354-357, September 1996; and Albu et al. “The Gauss-Seidel Fast Affine Projection Algorithm,” IEEE Workshop on Signal Processing Systems (SIPS 2002), ISBN 0-7803-75874, pp. 109-114, October 2002).

In a second method, as discussed in Liu et al., supra, a matrix inversion lemma is used twice to explicitly find R ⁻¹ (n)at each sampling interval n. In particular, it deems an accurate estimate R ⁻¹ (n−1) to start with and recursively derives R ⁻¹ (n) based on this estimate and knowledge of the new data X(n). The total computations needed are 2L+3N²+12N MACs and 2 DIVs. While slightly more complex than the original FAP filter, this method offers a more accurate estimation for R ⁻¹(n) because a conventional RLS algorithm, instead of a fast version (with inevitable degradations) of it, is used.

The above two approaches have a common problem: there is no feedback in the updating process. An accurate estimate of R ¹(n) relies heavily on an accurate starting point R ⁻¹(n−1). If R ¹(n−1) deviates from its accurate value, the algorithm has no way of knowing that and will keep using it. As a result, inevitable numerical errors in R ⁻¹(n−1) will very likely be propagated to R ⁻¹(n), R ⁻¹(n+1), R ⁻¹(n+2), . . . , and accumulate to a certain degree to make the whole algorithm collapse. A remedy is to periodically re-start a new inversion process in parallel with the existing one, and to replace the latter so as to get rid of the accumulated numerical errors. While this can be a feasible solution for high-precision DSPs such as a floating-point processor, it is not suitable for fixed-point DSP implementations because, given the low numerical precision of such processors, the numerical errors would accumulate so fast that the re-starting period would have to be made impractically small, not to mention the extra complexity associated with this part of the filter.

The following approaches have been proposed to overcome these disadvantages. The first method assumes that the auto-correlation matrix R(n) is Toeplitz, and, thus, the linear system can be solved relatively efficiently. For example, in U.S. Pat. No. 6,137,881 to Oh et al., the contents of which are incorporated herein by reference, it is believed that a Levinson-Durbin recursion is the method used to solve the Toeplitz linear system. This belief is based on the fact that a Toeplitz assumption is used and a computational complexity of O (2N²) MACs is asserted. A FAP filter according to this method incurs a total computation load of 2L+2N²+3N−2 MACs and N DIVs. This approach is stable, but gives an approximate solution because the actual autocorrelation matrix R(n) is not strictly Toeplitz. Furthermore, the computational load is a quite high, because the solution is division-intensive—a single DIV operation typically takes a general purpose DSP the same time as 20 to 30 MAC operations.

In U.S. Pat. No. 6,754,340, the present inventor proposed a conjugate gradient FAP (CGFAP) filter, a FAP filter using a so-called “conjugate gradient” iterative approach to solve the linear system—without the Toeplitz assumption. This filter has a computational complexity of 2L+2N²+9N+1 MACs and only 1 DIV per sampling interval. While CGFAP is stable, it is only meant for the so-called non-relaxed case, i.e., with a large normalized step size a, being equal or close to unity; therefore, it cannot be extended to the general step size case without drastically increasing the computational requirement. This is a restriction in practical applications.

Another approach to solving the linear system was proposed in Albu et al. supra. It is based on the so-called Gauss-Seidel scheme, which is also referred to as a method of successive displacements. This Gauss-Seidel FAP (GSFAP) filter purports to be stable and the total computational load of it is 2L+N²/p+(5-1/p)N−1 MACs and 1 DIV per sampling interval, where the rate-reduction factor p can range from 1 to 5, with a larger p resulting in more loss of system performance. However, like the CGFAP filter, this approach is also only suitable for cases where the normalized step size α is, or is close to, unity.

The present invention uses direct, as opposed to iterative, methods to solve the linear system. Thus, the methods are intrinsically stable and robust. The first embodiment applies an LDL^(T) factorization technique (see generally Gene H. Golub and Charles F. Van Loan, Matrix Computations, Second Edition, ISBN 0-8018-3772-3, The Johns Hopkins University Press, 1989) to a symmetric matrix, to find an exact solution to the linear system with an acceptable complexity. The second embodiment takes advantage of certain structural properties of the linear system to provide a reasonably accurate approximate solution with a very low complexity. By incorporating FAP filters featuring the proposed methods to solve the linear system in products such as network and acoustic echo cancellers, active noise control, and hearing aid feedback cancellation, users will be able to enjoy significantly improved (over the NLMS) performance with little or no increase in cost. Generally, the FAP filters with the present invention to solve the N-th order symmetric positive-definite linear system in Eq. (7) are stable, robust, simple, and able to take any step size αε[0,1].

Taking a closer look at the N-th order symmetric positive-definite linear system reveals certain structural properties, which are taken advantage of in the present invention. As shown in Eq. (7), it is necessary to solve an Nth order symmetric positive-definite system $\begin{matrix} {{{{\underset{\_}{\underset{\_}{R}}(n)}{\underset{\_}{ɛ}(n)}} = {\underset{\_}{e}(n)}}{where}} & (9) \\ {{\underset{\_}{ɛ}(n)} \equiv {\begin{bmatrix} {ɛ_{0}(n)} \\ {ɛ_{1}(n)} \\ \vdots \\ {ɛ_{N - 1}(n)} \end{bmatrix}\quad{and}\quad{\underset{\_}{e}(n)}} \equiv \begin{bmatrix} {e_{0}(n)} \\ {e_{1}(n)} \\ \vdots \\ {e_{N - 1}(n)} \end{bmatrix}} & (10) \end{matrix}$ are N-dimensional solution and given vectors, respectively, where ε(n) is the projected error vector and e(n) is the current known error vector. Furthermore, e(n) satisfies $\begin{matrix} {{\underset{\_}{e}(n)} = {\begin{bmatrix} {e(n)} \\ {\left( {1 - \alpha} \right){\underset{\_}{\overset{\_}{e}}\left( {n - 1} \right)}} \end{bmatrix} = \begin{bmatrix} {e(n)} \\ {\left( {1 - \alpha} \right){e\left( {n - 1} \right)}} \\ {\left( {1 - \alpha} \right)^{2}{e\left( {n - 2} \right)}} \\ \vdots \\ {\left( {1 - \alpha} \right)^{N - 1}{e\left( {n - N + 1} \right)}} \end{bmatrix}}} & (11) \end{matrix}$

which is a duplication of Eq. (8). This reveals a first structural property: e(n) is a pre-fixed and one position down shifted and scaled version of e(n−1) with last element discarded, as expressed in Eq. (11).

Looking now at the auto-correlation matrix R(n), and examining the definitions in Eqs. (7) and (5), results in $\begin{matrix} {{\underset{\_}{\underset{\_}{R}}(n)} \equiv \left\lbrack {r_{ij}(n)} \right\rbrack \equiv \begin{bmatrix} {r_{00}(n)} & {r_{01}(n)} & \cdots & {r_{0,{N - 1}}(n)} \\ {r_{10}(n)} & {r_{11}(n)} & \cdots & {r_{1,{N - 1}}(n)} \\ \vdots & \vdots & \quad & \vdots \\ {r_{{N - 1},0}(n)} & {r_{{N - 1},1}(n)} & \cdots & {r_{{N - 1},{N - 1}}(n)} \end{bmatrix}} & (12) \end{matrix}$ which is an N×N symmetric positive-definite matrix, i.e. r _(ij)(n)=r _(ji)(n), ∀i,jε[0,N−1]  (13)

Furthermore, in every sampling interval, the auto correlation matrix R(n) is shifted one position towards the lower right corner. This, together with the symmetry property, enables R(n) to be expressed as: $\begin{matrix} {{\underset{\_}{\underset{\_}{R}}(n)} = \begin{bmatrix} {r_{0}(n)} & {r_{1}(n)} & {r_{2}(n)} & \cdots & {r_{N - 2}(n)} & {r_{N - 1}(n)} \\ {r_{1}(n)} & {r_{0}\left( {n - 1} \right)} & {r_{1}\left( {n - 1} \right)} & \cdots & {r_{N - 3}\left( {n - 1} \right)} & {r_{N - 2}\left( {n - 1} \right)} \\ {r_{2}(n)} & {r_{1}\left( {n - 1} \right)} & {r_{0}\left( {n - 2} \right)} & \cdots & {r_{N - 4}\left( {n - 2} \right)} & {r_{N - 3}\left( {n - 2} \right)} \\ \vdots & \vdots & \vdots & \quad & \vdots & \vdots \\ {r_{N - 2}(n)} & {r_{N - 3}\left( {n - 1} \right)} & {r_{N - 4}\left( {n - 2} \right)} & \cdots & {r_{0}\left( {n - N + 2} \right)} & {r_{1}\left( {n - N + 2} \right)} \\ {r_{N - 1}(n)} & {r_{N - 2}\left( {n - 1} \right)} & {r_{N - 3}\left( {n - 2} \right)} & \cdots & {r_{1}\left( {n - N + 2} \right)} & {r_{0}\left( {n - N + 1} \right)} \end{bmatrix}} & (14) \end{matrix}$ Eqs. (7) and (5) mean that each element in Eq. (14) is a sum of L consecutive samples. With the observation window being of the order of N (N<<L) samples, it is reasonable to assume that the elements do not change much within N sampling intervals. Thus, two more structural properties become apparent. According to the second structural property, the auto-correlation matrix R(n) in Eq. (14) can be approximately regarded as constant over N sampling intervals. According to the third observed structural property, elements on each diagonal of the auto-correlation matrix R(n) can be approximately regarded as equal. In other words, R(n) is nearly Toeplitz. Given the second and third structural properties, for convenience, the time index “n” will be omitted in certain parts of this document, where there is no risk of confusion.

First, a solution to the N-th order symmetric positive-definite system of Eq. (9) without any approximation is presented. This is followed by another solution that offers a sub-optimal solution, but at a lower complexity. As used herein, “sub-optimal” means that the solution results in an approximate solution.

The symmetric (but not necessarily Toeplitz) matrix R can be uniquely factored into R=L D L ^(T)  (15) where D is a diagonal matrix and L is a unit lower triangular matrix—with all elements on the main diagonal being unity. Once R has been so factored, the N-th order symmetric positive-definite system can now be expressed as L D L ^(T) ε(n)= e (n)  (16) and the solution can be found by solving L ε ^((L)) =e (n)[ε ^((L)) =DL ^(T) ε(n)]  (17) with forward substitution, then D ε ^((D))=ε ^((L))[ε ^((L))[ε ^((D)) =L ^(T) ε(n)]  (18 with scaling, and finally L ^(T) ε(n)=ε ^((D))  (19) with back substitution. Details of this solution are given in Appendix A: LDLT Factorization and System Solving”.

If the LDL^(T) factorization is performed every sampling interval to factor the auto-correlation matrix, a full-rate version of the approach results. The number of MACs and DIVs required are: $\begin{matrix} {N_{{MAC},{LDL}}^{F} = {{\frac{N^{3}}{6} + {2N^{2}} - {\frac{7N}{6}\quad{and}\quad N_{{DIV},{LDL}}^{F}}} = N}} & (20) \end{matrix}$ where the superscript “F” stands for “full rate.”

However, taking note of the second observed structural property, R changes slowly over time; therefore, LDL^(T) factorization does not have to be performed every sampling interval, and can be done at a reduced rate. If the LDL^(T) factorization is done once every N samples and the computational load is evenly distributed over the N-sample period, then on the average for each sampling interval, only $\begin{matrix} {{N_{{MAC},F}^{R} = {\frac{N_{{MAC},F}}{N} = {{\frac{1}{N}\left( {\frac{N^{3}}{6} + N^{2} - \frac{7N}{6}} \right)} = {\frac{N^{2}}{6} + N - \frac{7}{6}}}}}{{MACs}\quad{and}}} & (21) \\ {N_{{DIV},F}^{R} = {\frac{N_{{DIV},F}}{N} = {\frac{N}{N} = 1}}} & (22) \end{matrix}$ DIV are required to do the LDL^(T) factorization. In Eqs. (21) and (22), the superscript “R stands for “reduced rate.” Combined with the necessary forward substitution, scaling and back substitution that follow the factorization, only $\begin{matrix} {\begin{matrix} {N_{{MAC},{LDL}}^{R} = {N_{{MAC},F}^{R} + N_{{MAC},{FS}} + N_{{MAC},S} + N_{{MAC},{BS}}}} \\ {= {\left( {\frac{N^{2}}{6} + N - \frac{7}{6}} \right) + {\frac{N}{2}\left( {N - 1} \right)} + N + {\frac{N}{2}\left( {N - 1} \right)}}} \\ {\approx {{\frac{7}{6}N^{2}} + N - 1}} \end{matrix}{{MACs}\quad{and}}} & (23) \\ {N_{{DIV},{LDL}}^{R} = {{N_{{DIV},F}^{R} + N_{{DIV},{FS}} + N_{{DIV},S} + N_{{DIV},{BS}}} = {{1 + 0 + 0 + 0} = 1}}} & (24) \end{matrix}$ DIV are needed in each sampling interval to find the solution to solve for the linear system.

Thus, the overall complexity figures for the LDL^(T) FAP filters are $\begin{matrix} {N_{{MAC},{LDLFAP}}^{F} = {{{2L} + \frac{N^{3}}{6} + {2N^{2}} + \frac{17N}{6} - {2\quad{and}\quad N_{{DIV},{LDLFAP}}^{F}}} = N}} & (24) \end{matrix}$ for the full-rate LDL^(T) FAP, and $\begin{matrix} {N_{{MAC},{LDLFAP}}^{R} = {{{2\quad L} + {\frac{7}{6}N^{2}} + {5N} - {3\quad{and}\quad N_{{DIV},{LDLFAP}}^{R}}} = 1}} & (26) \end{matrix}$ for the reduced-rate LDL^(T) FAP.

To summarize, this approach is based on the LDL^(T) factorization technique. Its full-rate version finds the exact solution, without taking any approximation, at a complexity slightly higher than that of CGFAP with typical values of N (between 5 and 10) for voice applications. The reduced-rate version gives an approximate solution at a complexity lower than CGFAP and comparable to that of GSFAP with the “rate reduction” factor p=1. However, CGFAP and GSFAP are non-relaxed (□□1), whereas the two versions of the LDL^(T) FAP can take a general step size □□{tilde over (□)}|□.

A summary of the steps and computational complexity for fultrate and reduced-rate LDL^(T) FAP methods according to the present invention are as shown below.

Initialization (n=−1): V (−1)=0, X (−1)=0, η(−1)=0, R (−1)=δ I, e (−1)=0  (27)

Processing in Sampling Interval n (n=0,1,2, . . . ): TABLE 1 (28) LDL^(T) FAP MAC DIV ${\underset{\underset{\_}{\_}}{R}(n)} = {{\underset{\underset{\_}{\_}}{R}\left( {n - 1} \right)} + {{\underset{\_}{\xi}(n)}{{\underset{\_}{\xi}}^{T}(n)}} - {{\underset{\_}{\xi}\left( {n - L} \right)}{{\underset{\_}{\xi}}^{T}\left( {n - L} \right)}}}$ 2N ${\underset{\_}{V}(n)} = {{\underset{\_}{V}\left( {n - 1} \right)} + {{{\alpha\eta}_{N - 1}\left( {n - 1} \right)}{\underset{\_}{X}\left( {n - N} \right)}}}$ L ${y(n)} = {{{{\underset{\_}{V}}^{T}(n)}{\underset{\_}{X}(n)}} + {\alpha\quad{{\overset{\_}{\underset{\_}{\eta}}}^{T}\left( {n - 1} \right)}{\overset{\sim}{\underset{\_}{R}}(n)}}}$ L + N − 1 e(n) = d(n) − y(n) ${\underset{\_}{e}(n)} = \begin{bmatrix} {e(n)} \\ {\left( {1 - \alpha} \right)\quad{\overset{\_}{\underset{\_}{e}}\left( {n - 1} \right)}} \end{bmatrix}$ N − 1 ${\underset{\_}{ɛ}(n)} = {{{\underset{\underset{\_}{\_}}{R}}^{- 1}(n)}{\underset{\_}{e}(n)}}$ ${F\text{:}\quad\frac{N^{3}}{6}} + {2N^{2}} - \frac{7N}{6}$ N ${F\text{:}\quad\frac{7}{6}N^{2}} + N - 1$ 1 ${\underset{\_}{\eta}(n)} = {\begin{bmatrix} 0 \\ {\overset{\_}{\underset{\_}{\eta}}\left( {n - 1} \right)} \end{bmatrix} + {\underset{\_}{ɛ}(n)}}$ Total: ${F\text{:}\quad 2L} + \quad{\frac{N^{3}}{6}2N^{2}} + \frac{17N}{6} - 2$ N ${F\text{:}\quad 2L} + \quad{\frac{7}{6}N^{2}} + {5N} - 3$ 1 Note:

-   -   ξ(n) is defined in Eq. (4),     -   R(n) is the left-most column of R(n),     -   {tilde over (R)} (n) is an N−1 vector consisting of the N−1         lower elements of the Nvector R(n),     -   {overscore (η)} (n) is an N−1 vector consisting of the N-1 upper         elements of the Nvector η (n), and     -   “F” stands for “full-rate” and “R” for “reduced-rate.”

A second embodiment of the present invention assumes that the auto correlation matrix R(n) is Toeplitz, as noted in the third observed structural property. A variation of the Levinson-Durbin recursion is used.

Using a subscript to denote an array's dimension, Eq. (9) can be expressed as: $\begin{matrix} {{{{{\underset{\_}{\underset{\_}{R}}}_{N}(n)}{{\underset{\_}{ɛ}}_{N}(n)}} = {{\underset{\_}{e}}_{N}(n)}}{where}} & (29) \\ {{{\underset{\_}{ɛ}}_{N}(n)} \equiv {\begin{bmatrix} {ɛ_{0}(n)} \\ {ɛ_{1}(n)} \\ \vdots \\ {ɛ_{N - 1}(n)} \end{bmatrix}\quad{and}\quad{\underset{\_}{e}}_{N}} \equiv \begin{bmatrix} {e_{0}(n)} \\ {e_{1}(n)} \\ \vdots \\ {e_{N - 1}(n)} \end{bmatrix}} & (30) \end{matrix}$ are N-dimensional solution and given vectors, respectively.

To apply the Levinson-Durbin recursion, R _(N)(n) must be constant (not time varying), symmetric and positive-definite Toeplitz. In fact, the auto-correlation matrix R _(N)(n) varies slowly and can be approximately regarded as constant over N sampling intervals, and R _(N) can be regarded as nearly Toeplitz. These features permit the N-th order system Eq. (29) to be expressed as R _(N) ε _(N)(n)= e _(N)(n)  (31) where R _(N) is a constant symmetric and positive-definite Toeplitz matrix. A full Levinson-Durbin recursion requires M _(MAC,LD)=2N ² −N  (32) and N_(DIV,LD)=N  (33) MACs and DIVs, respectively, to solve Eq. (31).

In order to simplify the solution of Eq. (31), and thereby bring down the complexity figures, we observe that, as a result of R _(N) varying slowly, the solution to the corresponding Yule-Walker system (discussed in “Appendix B: Durbin's Recursion for Yule-Walker Systems”) also changes slowly over time. In addition, the right-hand side of Eq. (31), e _(N)(n), is a pre-fixed and one position down shifted and scaled version of e(n−1) with last element discarded, as observed above: $\begin{matrix} {{{{\underset{\_}{e}}_{N}\left( {n + 1} \right)} \equiv \begin{bmatrix} {e_{0}\left( {n + 1} \right)} \\ {e_{1}\left( {n + 1} \right)} \\ \vdots \\ {e_{N - 1}\left( {n + 1} \right)} \end{bmatrix}} = {\begin{bmatrix} {e_{0}\left( {n + 1} \right)} \\ {\left( {1 - \alpha} \right){e_{0}(n)}} \\ {\left( {1 - \alpha} \right){e_{1}(n)}} \\ \vdots \\ {\left( {1 - \alpha} \right){e_{N - 2}(n)}} \end{bmatrix} = \begin{bmatrix} {e_{0}\left( {n + 1} \right)} \\ {\left( {1 - \alpha} \right){{\underset{\_}{e}}_{N - 1}(n)}} \end{bmatrix}}} & (34) \end{matrix}$ where the scalar (1−α) satisfies 0≦(1−α)≦1, and $\begin{matrix} {{{\underset{\_}{e}}_{N - 1}(n)} \equiv \begin{bmatrix} {e_{0}(n)} \\ {e_{1}(n)} \\ \vdots \\ {e_{N - 2}(n)} \end{bmatrix}} & (35) \end{matrix}$ In other words, e _(N) (n+1) is a scaled and one-position down-shifted version of e _(N)(n) with the latter's last element discarded and a fresh sample e₀(n+1) prefixed.

The problem can be phrased as: given the solution ε _(N)(n) to Eq. (31), we need to find the solution ε _(N)(n+1) to R _(N) ε _(N)(n+ 1 )= e _(N)(n+1)  (36) where e _(N) (n+1) is given by Eq. (34).

The idea behind the proposed approach is to make use of this observation in relation to e _(N)(n) and the available ε_(N)(n) in order to obtain ε_(N) (n+1) with less effort than that with the Levinson-Durbin's recursion, which can solve Eq. (36), but at the cost given above. The filtering method performs backward-recursion to derive from ε _(N) (n) a vector Z _(N−1), solution to R _(N−1) Z _(N−1) =e _(N−1)(n)  (37) followed by forward-recursion on Z _(N−1) to obtain ε _(N) (n+1).

Equation (31) can be expressed as $\begin{matrix} {{\begin{bmatrix} {\underset{\_}{\underset{\_}{R}}}_{N - 1} & {{\underset{\_}{\underset{\_}{E}}}_{N - 1}{\underset{\_}{R}}_{N - 1}} \\ {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{\underset{\_}{E}}}_{N - 1}} & r_{0} \end{bmatrix}\begin{bmatrix} {{\underset{\_}{ɛ}}_{N - 1}(n)} \\ {ɛ_{N - 1}(n)} \end{bmatrix}} = \begin{bmatrix} {{\underset{\_}{e}}_{N - 1}(n)} \\ {e_{N - 1}(n)} \end{bmatrix}} & (38) \end{matrix}$ where the exchange matrix E _(N−1) is an (N−1)-th mirror image of the identity matrix | _(N−1), and $\begin{matrix} {{\underset{\_}{R}}_{N - 1} \equiv \begin{bmatrix} r_{1} \\ r_{2} \\ \vdots \\ r_{N - 1} \end{bmatrix}} & (39) \end{matrix}$ Using Eq. (37), Eq. (38) can be partially expanded into R _(N−1) ε _(N−1)(n)+ε_(N−1)(n)E _(N−1) R _(N−1) =e _(N−1)(n)= R _(N−1) Z _(N−1)  (40) and, since R _(N−1) is persymmetric (i.e. symmetric about its upper right and lower left diagonal) such that R _(N−1) E _(N−1)=E _(N−1) R _(N−1) and (R _(N−1) E _(N−1))⁻¹=(E _(N−1) R _(N−1))⁻¹, then $\begin{matrix} \begin{matrix} {{\underset{\_}{Z}}_{N - 1} = {{{\underset{\_}{ɛ}}_{N - 1}(n)} + {{ɛ_{N - 1}(n)}{\underset{\_}{\underset{\_}{R}}}_{N - 1}^{- 1}{\underset{\_}{\underset{\_}{E}}}_{N - 1}{\underset{\_}{R}}_{N - 1}}}} \\ {= {{{\underset{\_}{ɛ}}_{N - 1}(n)} + {{ɛ_{N - 1}(n)}{\underset{\_}{\underset{\_}{E}}}_{N - 1}{\underset{\_}{\underset{\_}{R}}}_{N - 1}^{- 1}{\underset{\_}{R}}_{N - 1}}}} \\ {= {{{\underset{\_}{ɛ}}_{N - 1}(n)} - {{ɛ_{N - 1}(n)}{\underset{\_}{\underset{\_}{E}}}_{N - 1}{\underset{\_}{Y}}_{N - 1}}}} \end{matrix} & (41) \end{matrix}$

Eq. (41) can be solved using an (N−1)-th order Yule-Walker system R _(N−) Y _(N−1) =−R _(N−1)  (42) to find Y _(N−1), as is discussed in Appendix B.

Next, at time n+1, Eq. (36) with Eq. (34) substituted in can be expressed as $\begin{matrix} {{{\begin{bmatrix} r_{0} & {\underset{\_}{R}}_{N - 1}^{T} \\ {\underset{\_}{R}}_{N - 1} & {\underset{\_}{\underset{\_}{R}}}_{N - 1} \end{bmatrix}\begin{bmatrix} {ɛ_{0}\left( {n + 1} \right)} \\ {{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)} \end{bmatrix}} = \begin{bmatrix} {e_{0}\left( {n + 1} \right)} \\ {\left( {1 - \alpha} \right){{\underset{\_}{e}}_{N - 1}(n)}} \end{bmatrix}}{where}} & (43) \\ {{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)} \equiv \begin{bmatrix} {ɛ_{1}\left( {n + 1} \right)} \\ {ɛ_{2}\left( {n + 1} \right)} \\ \vdots \\ {ɛ_{N - 1}\left( {n + 1} \right)} \end{bmatrix}} & (44) \end{matrix}$

Expanding Eq. (43) and using Eq. (37) results in r ₀ε₀(n+1)+ R _(N−1) ^(T){tilde over (ε)}_(N−1)(n+1)=e ₀(n+1 )  (45) and ε₀(n+1) R _(N−1) +R _(N−1){tilde over (ε)}_(N−1)(n+1)=(1−α) e _(N−1)(n)=(1−α) R _(N−1) Z _(N−1)  (46)

From Eq. (46) and using Eq. (42), part of the projected error vector can be expressed as: $\begin{matrix} {{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)} = {{{\left( {1 - \alpha} \right){\underset{\_}{Z}}_{N - 1}} - {{ɛ_{0}\left( {n + 1} \right)}{\underset{\_}{\underset{\_}{R}}}_{N - 1}^{- 1}{\underset{\_}{R}}_{N - 1}}} = {{\left( {1 - \alpha} \right){\underset{\_}{Z}}_{N - 1}} + {{ɛ_{0}\left( {n + 1} \right)}{\underset{\_}{Y}}_{N - 1}}}}} & (47) \end{matrix}$ which is then substituted into Eq. (45) so that $\begin{matrix} {\begin{matrix} {{r_{0}{ɛ_{0}\left( {n + 1} \right)}} = {{e_{0}\left( {n + 1} \right)} - {{\underset{\_}{R}}_{N - 1}^{T}{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)}}}} \\ {= {{e_{0}\left( {n + 1} \right)} - {{\underset{\_}{R}}_{N - 1}^{T}\left\lbrack {{\left( {1 - \alpha} \right){\underset{\_}{Z}}_{N - 1}} + {{ɛ_{0}\left( {n + 1} \right)}{\underset{\_}{Y}}_{N - 1}}} \right\rbrack}}} \end{matrix}{or}} & (48) \\ {{ɛ_{0}\left( {n + 1} \right)} = \frac{{e_{0}\left( {n + 1} \right)} - {\left( {1 - \alpha} \right){\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{Z}}_{N - 1}}}{r_{0} + {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{Y}}_{N - 1}}}} & (49) \end{matrix}$

Thus, this embodiment of the present invention recursively finds the solution to Eq. (36) given the solution to Eq. (31), and can be summarized as $\begin{matrix} {{{\underset{\_}{T}}_{N - 1} = {\left( {1 - \alpha} \right)\left\lfloor {{{\underset{\_}{ɛ}}_{N - 1}(n)} - {{ɛ_{N - 1}(n)}{\underset{\_}{\underset{\_}{E}}}_{N - 1}{\underset{\_}{Y}}_{N - 1}}} \right\rfloor}}{{ɛ_{0}\left( {n + 1} \right)} = \frac{{e_{0}\left( {n + 1} \right)} - {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{T}}_{N - 1}}}{r_{0} + {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{Y}}_{N - 1}}}}{{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)} = {{\underset{\_}{T}}_{N - 1} + {{ɛ_{0}\left( {n + 1} \right)}{\underset{\_}{Y}}_{N - 1}}}}} & (50) \end{matrix}$ where T _(N−1) equals (1−α) Z _(N−1) in previous derivations. This approach can be described as “reciprocating recursion with prefixing and shifting;” and is therefore, abbreviated as a “RATCHET approach.”

Looking for a simpler way of finding ε₀ (n+1) in Eq. (50). Equation (110) in Appendix B indicates that $\begin{matrix} {\frac{1}{r_{0} + {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{Y}}_{N - 1}}} = \rho_{N - 1}} & (51) \end{matrix}$ Since the RATCHET filter relies on an (N−1)-th order Durbin's recursion to provide Y _(N−1). ρ_(N−2) is already available when Y _(N−1) has been found. Thus, Eq. (51) can be found recursively by use of Eq. (112) in Appendix B, $\begin{matrix} {\rho_{N - 1} = \frac{\rho_{N - 2}}{1 - y_{N - 2}^{2}}} & (52) \end{matrix}$ at an expense of N_(MAC,RHO)=1 and N_(DIV,RHO)=1  (53) MAC and DIV, respectively. This is less expensive than directly calculating the denominator for ε₀ (n+1) in Eq. (50).

Equation (50) can then be re-written as T _(N−1)=(1−α)[ε _(N−1)(n)−ε_(N−1)(n)E _(N−1) Y _(N−1)] ε₀(n+1 )=ρ_(N−1) [e ₀(n+1)− R _(N−1) ^(T) T _(N−1)] {tilde over (ε)}_(N−1)(n+1)= T _(N−1)+ε₀(n+1) Y _(N−1)  (54) where it is assumed that Eq. (52) has been appended to the end of the Durbin's recursion process, so that ρ_(N−1) is available.

The RATCHET method can, thus, be implemented as $\begin{matrix} {{{l = 0},1,\ldots\quad,{N - {2\text{:}}}}{t_{k} = {\left( {1 - \alpha} \right)\left( {ɛ_{k} - {ɛ_{N - 1}y_{N - 2 - k}}} \right)}}{ɛ_{0} = {\rho_{N - 1}\left( {e_{0} - {\sum\limits_{k = 0}^{N - 2}\quad{r_{k + 1}t_{k}}}} \right)}}{{k = 0},1,\ldots\quad,{N - {2\text{:}}}}{ɛ_{k + 1} = {t_{k} + {ɛ_{0}y_{k}}}}} & (55) \end{matrix}$ where {t₀, t₁, . . . , t_(N−2)} are temporary storage elements. In Eq. (55), we let ε _(N) (n+1) overwrite ε _(N) (n) in order to save memory needs.

The numbers of MACs and DIVs needed to implement this solution are N _(MAC,RAT)=2(N−1)+N+(N−1)=4N−3  (56) and N_(DIV,RAT)=0  (50  (57) respectively.

If it is desired that the (N−1)-th order Yule-Walker solution be updated every sampling interval, i.e., at a full-rate, then the total numbers of MACs and DIVs for finding ε _(N)(n+1) given ε _(N) (n) is $\begin{matrix} {\begin{matrix} {N_{MAC}^{F} = {{N_{{MAC},{YW}} + N_{{MAC},{RHO}} + N_{{MAC},{RAT}}} = {\left( {N^{2} - N - 1} \right) +}}} \\ {1 + \left( {{4\quad N} - 3} \right)} \\ {= {N^{2} + {3\quad N} - 3}} \end{matrix}{and}} & (58) \\ {N_{DIV}^{F} = {{N_{{DIV},{YW}} + N_{{DIV},{RHO}} + N_{{DIV},{RAT}}} = {{\left( {N - 1} \right) + 1 + 0} = N}}} & (59) \end{matrix}$ respectively. Thus a full-rate RATCHET filter, which produces the same results as the Levinson-Durbin FAP filter, only requires about half as many MACs.

Furthermore, since R _(N−1) changes slowly over time, a full-rate solution need not be implemented. Instead, the computation for the (N−1)-th order Yule-Walker solution can be done once every N sampling intervals and evenly distributed over the N-sample period, resulting in a reduced-rate RACHET filter method. On average for each sampling interval, only $\begin{matrix} {\begin{matrix} {N_{MAC}^{R} = {{\frac{N_{{MAC},{YW}} + N_{{MAC},{RHO}}}{N} + N_{{MAC},{RAT}}} =}} \\ {\frac{\left( {N^{2} - N - 1} \right) + 1}{N} + \left( {{4\quad N} - 3} \right)} \\ {= {{5\quad N} - 4}} \end{matrix}{{MACs}\quad{and}}} & (60) \\ {N_{DIV}^{R} = {{\frac{N_{{DIV},{YW}} + N_{{DIV},{RHO}}}{N} + N_{{DIV},{RAT}}} = {{\frac{\left( {N - 1} \right) + 1}{N} + 0} = 1}}} & (61) \end{matrix}$ DIV are needed to recursively solve Eq. (36). Thus, the reduced-rate RATCHET approach offers significant computational savings over the Levinson-Durbin FAP method, the computational requirements of which are given above at Eq. (32) and Eq. (33).

In addition, for the non-relaxed case, i.e. where the normalized step size α is at, or close to, unity, the RATCHET method Eq. (54) can be further simplified such that: $\begin{matrix} {{{ɛ_{0}\left( {n + 1} \right)} = {\rho_{N - 1}{e_{0}\left( {n + 1} \right)}}}{{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}\left( {n + 1} \right)} = {{ɛ_{0}\left( {n + 1} \right)}{\underset{\_}{Y}}_{N - 1}}}{or}} & (62) \\ {{\underset{\_}{ɛ}\left( {n + 1} \right)} = {\rho_{N - 1}{{e_{0}\left( {n + 1} \right)}\begin{bmatrix} 1 \\ {\underset{\_}{Y}}_{N - 1} \end{bmatrix}}}} & (63) \end{matrix}$ at a cost of only N_(MAC,RAT) _(NX)=N MACs and N_(DIV,RAT) _(NX)=0 DIVs per sampling interval, where the superscript NX denotes “non-relaxed”. This is a further reduction over the complexity given in Eq. (56) and Eq. (57) for the full-rate RATCHET method. The complexity is improved even further in the case of the reduced rate RATCHET method. On average, for each sampling interval only $\begin{matrix} {{N_{MAC}^{R,{NX}} = {{\frac{N_{{MAC},{YW}} + N_{{MAC},{RHO}}}{N} + N_{{MAC},{RAT}}^{NX}} = {{\frac{\left( {N^{2} - N - 1} \right) + 1}{N} + N} = {{2\quad N} - 1}}}}{{MACs}\quad{and}}} & (64) \\ {N_{DIV}^{R,{NX}} = {{\frac{N_{{DIV},{YW}} + N_{{DIV},{RHO}}}{N} + N_{{DIV},{RAT}}^{NX}} = {{\frac{\left( {N - 1} \right) + 1}{N} + 0} = 1}}} & (65) \end{matrix}$ DIV to recursively solve Eq. (36).

To summarize, the RATCHET methods of the present invention provide a method for directly solving the linear system involving the auto-correlation matrix R(n) by (1) using a Durbin's recursion to solve an (N−1)-th order Yule-Walker system and (2) by finding the solution to the linear system based on the Yule-Walker solution. Due to the fact that R(n) is nearly Toeplitz and can be considered constant over N sampling intervals, the Durbin's recursion can be performed at a reduced rate—for example, once every N sampling intervals—without significantly affecting the performance. This results in a computational saving from O (N²) to O (N) for this recursion step; and, due to the fact that the N-dimensional solution vector e(n) is a pre-fixed and one position down shifted and scaled version of e(n−1) with the last element discarded, the Levinson's recursion, which requires N steps to complete, can be replaced by a 2-step reciprocating recursion method. This reduces the computational complexity from O (N²) to O (4N) for this recursion step.

After initialization steps, as shown in Eq. (66), Eq. (69), and Eq. (72), the full-rate RATCHET FAP, reduced-rate RATCHET FAP, and the non-relaxed version of the reduced-rate RATCHET FAP filtering methods can be summarized as follows in Tables 2, 3, and 4. Initialization (n=−1) $\begin{matrix} {{{\underset{\_}{V}\left( {- 1} \right)} = \underset{\_}{0}},{{\underset{\_}{X}\left( {- 1} \right)} = \underset{\_}{0}},{{\underset{\_}{\eta}\left( {- 1} \right)} = \underset{\_}{0}},{{\underset{\_}{e}\left( {- 1} \right)} = \underset{\_}{0}},{\gamma = {1 - \alpha}},{\underset{\_}{R} = \begin{bmatrix} \delta \\ 0 \\ \vdots \\ 0 \end{bmatrix}}} & (66) \end{matrix}$

Processing in Sampling Interval n (n=0,1,2, . . . ): TABLE 2 Full-rate RATCHET FAP MAC DIV $\underset{\_}{R} = {\underset{\_}{R} + {{x(n)}{\underset{\_}{\xi}(n)}} - {{x\left( {n - L} \right)}\quad{\underset{\_}{\xi}\left( {n - L} \right)}}}$ 2N ${\underset{\_}{V}(n)} = {{\underset{\_}{V}\left( {n - 1} \right)} + {{{\alpha\eta}_{N - 1}\left( {n - 1} \right)}\quad{\underset{\_}{X}\left( {n - N} \right)}}}$ L ${y(n)} = {{{{\underset{\_}{V}}^{T}(n)}{\underset{\_}{X}(n)}} + {\alpha\quad{{\overset{\_}{\underset{\_}{\eta}}}^{T}\left( {n - 1} \right)}\quad\overset{\sim}{\underset{\_}{R}}}}$ L + N − 1 e(n) = d(n) − y(n) $\begin{matrix} {{\rho = {1/r_{0}}};{y_{0} = {- {\rho r}_{1}}}} \\ {{k = 1},2,\ldots\quad,{{N - 2}:}} \\ {\rho = {\rho/\left( {1 - y_{k - 1}^{2}} \right)}} \\ {y_{k} = {- {\rho\left\lbrack {r_{k + 1} + {{\underset{\_}{R}}_{k}^{T}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}}} \right\rbrack}}} \\ {{\underset{\_}{Y}}_{k} = {{\underset{\_}{Y}}_{k} + {y_{k}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}}}} \end{matrix}\quad$ N² − N − 1 N − 1 Durbin's recursion ρ = ρ/(1 − y_(N − 1)²) 1 1 find ρ $\begin{matrix} {{\underset{\_}{T}}_{N - 1} = {\gamma\left\lfloor {{{\underset{\_}{ɛ}}_{N - 1}\left( {n - 1} \right)} - {{ɛ_{N - 1}\left( {n - 1} \right)}\quad{\underset{\underset{\_}{\_}}{E}}_{N - 1}{\underset{\_}{Y}}_{N - 1}}} \right\rfloor}} \\ {{ɛ_{0}(n)} = {\rho\left\lbrack {{e(n)} - {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{T}}_{N - 1}}} \right\rbrack}} \\ {{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}(n)} = {{\underset{\_}{T}}_{N - 1} + {{ɛ_{0}(n)}{\underset{\_}{Y}}_{N - 1}}}} \end{matrix}\quad$ 4N − 3 RATCHET ${\underset{\_}{\eta}(n)} = \begin{bmatrix} {ɛ_{0}(n)} \\ {{\overset{\_}{\underset{\_}{\eta}}\left( {n - 1} \right)} + {{\overset{\sim}{\underset{\_}{ɛ}}}_{N - 1}(n)}} \end{bmatrix}$ Total 2L + N² + 6N − 4 N Note:

-   -   ξ(n) is defined in Eq. (4);     -   the N vector R=[δ+r₀ r₁ . . . r_(N−1)]^(T ()67) is the left-most         column of R(n), the rest of which does not need to be stored;     -   {tilde over (R)} is an N−1 vector consisting of the N−1 lower         elements of R;     -   {overscore (η)}(n) is an N−1 vector consisting of the N−1 upper         elements of the N vector η(n);     -   the goal of the three boxed marked “Durbin's recursion,” “Find         □,” and “RATCHET,” respectively, is to find ε(n)=R ⁻¹(n)e(n);     -   the vector e(n) does not need to be explicitly calculated; and         $\begin{matrix}         {{\underset{\_}{Y}}_{N - 1} = \begin{bmatrix}         {\underset{\_}{Y}}_{N - 2} \\         y_{N - 2}         \end{bmatrix}} & (68)         \end{matrix}$         Initialization (n=−1):         V (−1)=0, X (−1)=0, η(−1)=0, e (−1)=0         R−[δ0 . . . 0]^(T) , Y ⁰ _(N−1)=0, ρ⁰=1/δ,γ=1−α  (69)

Processing in Sampling Interval n (n=0, 1, 2, . . . ): TABLE 3 Reduced-rate RATCHET FAP MAC DIV $\underset{\_}{R} = {\underset{\_}{R} + {{x(n)}{\underset{\_}{\xi}(n)}} - {{x\left( {n - L} \right)}\quad{\underset{\_}{\xi}\left( {n - L} \right)}}}$ 2N ${\underset{\_}{V}(n)} = {{\underset{\_}{V}\left( {n - 1} \right)} + {{{\alpha\eta}_{N - 1}\left( {n - 1} \right)}\quad{\underset{\_}{X}\left( {n - N} \right)}}}$ L ${y(n)} = {{{{\underset{\_}{V}}^{T}(n)}{\underset{\_}{X}(n)}} + {\alpha\quad{{\overset{\_}{\underset{\_}{\eta}}}^{T}\left( {n - 1} \right)}\quad\overset{\sim}{\underset{\_}{R}}}}$ L + N − 1 e(n) = d(n) − y(n) $\begin{matrix} {{{If}\quad{n/N}} = {k\quad({integer})}} \\ {{{\underset{\_}{Y}}_{N - 1} = {\underset{\_}{Y}}_{N - 1}^{0}};{\rho = \rho^{0}}} \end{matrix}\quad$ Once every N samples $\begin{matrix} {{{{Calculate}\quad{during}\quad n} \in \quad\left\lbrack {{kn},{\left( {k + 1} \right)N}} \right)}:} \\ {\begin{matrix} {{\rho = {1/r_{0}}};{y_{0}^{0} = {{- \rho^{0}}r_{1}}}} \\ {{k = 1},2,\ldots\quad,{{N - 2}:}} \\ {\rho^{0} = {\rho^{0}/\left\lbrack {1 - \left( y_{k - 1}^{0} \right)^{2}} \right\rbrack}} \\ {y_{k}^{0} = {- {\rho^{0}\left\lbrack {r_{k + 1} + {{\underset{\_}{R}}_{k}^{T}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}^{0}}} \right\rbrack}}} \\ {{\underset{\_}{Y}}_{k}^{0} = {{\underset{\_}{Y}}_{k}^{0} + {y_{k}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}^{0}}}} \end{matrix}\quad} \end{matrix}\quad$ $\frac{N^{2} - N - 1}{N}$ $\frac{N - 1}{N}$ Durbin's recursion $\begin{matrix} {{{{Calculate}\quad{at}\quad{end}\quad{of}\quad n} \in \left\lbrack {{kn},{\left( {k + 1} \right)N}} \right)}:} \\ {\rho^{0} = {\rho^{0}/\left\lbrack {1 - \left( y_{N - 2}^{0} \right)^{2}} \right\rbrack}} \end{matrix}\quad$ 1/N 1/N Find ρ $\begin{matrix} {{\underset{\_}{T}}_{N - 1} = {\gamma\left\lfloor {{{\underset{\_}{ɛ}}_{N - 1}\left( {n - 1} \right)} - {{ɛ_{N - 1}\left( {n - 1} \right)}\quad{\underset{\underset{\_}{\_}}{E}}_{N - 1}{\underset{\_}{Y}}_{N - 1}}} \right\rfloor}} \\ {{ɛ_{0}(n)} = {\rho\left\lbrack {{e(n)} - {{\underset{\_}{R}}_{N - 1}^{T}{\underset{\_}{T}}_{N - 1}}} \right\rbrack}} \\ {{{\underset{\_}{\overset{\sim}{ɛ}}}_{N - 1}(n)} = {{\underset{\_}{T}}_{N - 1} + {{ɛ_{0}(n)}{\underset{\_}{Y}}_{N - 1}}}} \end{matrix}\quad$ 4N − 3 RATCHET ${\underset{\_}{\eta}(n)} = \begin{bmatrix} {ɛ_{0}(n)} \\ {{\overset{\_}{\underset{\_}{\eta}}\left( {n - 1} \right)} + {{\overset{\sim}{\underset{\_}{ɛ}}}_{N - 1}(n)}} \end{bmatrix}$ Total: 2L + 8N − 5 1 Note:

-   -   ξ(n) is defined in Eq.(4);     -   the N vector R=[δ+r₀ r₁ . . . r_(N−1)]^(T) (70) is the left-most         column of R(n), the rest of which does not need to be stored;     -   {tilde over (R)} is an N−1 vector consisting of the N−1 lower         elements of R;     -   {overscore (η)}(n) is an N−1 vector consisting of the N−1 upper         elements of the N vector {overscore (η)}(n);     -   the purpose of the three boxes marked “Durbin's recursion,”         “Find □,” and “RATCHET,” respectively, is to find ε(n)=R ⁻¹         (n)e(n);     -   the vector e(n) does not need to be explicitly calculated; and         $\begin{matrix}         {{\underset{\_}{Y}}_{N - 1}^{0} = \begin{bmatrix}         {\underset{\_}{Y}}_{N - 2}^{0} \\         y_{N - 2}^{0}         \end{bmatrix}} & (71)         \end{matrix}$         Initialization (n=−1):         V (−1)=0, X (−1)=0, η(−1)= 0 , e(−1)=0         R=[δ0 . . . 0]^(T) , Y ⁰ _(N−1)=0, ρ⁰=1/δ  (72)

Processing in Sampling Interval n (n=0, 1, 2, . . . ): TABLE 4 Reduced-rate RATCHET FAT − non-relaxed MAC DIV $\underset{\_}{R} = {\underset{\_}{R} + {{x(n)}{\underset{\_}{\xi}(n)}} - {{x\left( {n - L} \right)}\quad{\underset{\_}{\xi}\left( {n - L} \right)}}}$ 2N ${\underset{\_}{V}(n)} = {{\underset{\_}{V}\left( {n - 1} \right)} + {{{\alpha\eta}_{N - 1}\left( {n - 1} \right)}\quad{\underset{\_}{X}\left( {n - N} \right)}}}$ L ${y(n)} = {{{{\underset{\_}{V}}^{T}(n)}{\underset{\_}{X}(n)}} + {\alpha\quad{{\overset{\_}{\underset{\_}{\eta}}}^{T}\left( {n - 1} \right)}\quad\overset{\sim}{\underset{\_}{R}}}}$ L + N − 1 e(n) = d(n) − y(n) $\begin{matrix} {{{If}\quad{n/N}} = {k\quad({integer})}} \\ {{{\underset{\_}{Y}}_{N - 1} = {\underset{\_}{Y}}_{N - 1}^{0}};{\rho = \rho^{0}}} \end{matrix}\quad$ Once every N samples $\begin{matrix} {{{{Calculate}\quad{during}\quad n} \in \quad\left\lbrack {{kn},{\left( {k + 1} \right)N}} \right)}:} \\ {\begin{matrix} {{\rho = {1/r_{0}}};{y_{0}^{0} = {{- \rho^{0}}r_{1}}}} \\ {{k = 1},2,\ldots\quad,{{N - 2}:}} \\ {\rho^{0} = {\rho^{0}/\left\lbrack {1 - \left( y_{k - 1}^{0} \right)^{2}} \right\rbrack}} \\ {y_{k}^{0} = {- {\rho^{0}\left\lbrack {r_{k + 1} + {{\underset{\_}{R}}_{k}^{T}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}^{0}}} \right\rbrack}}} \\ {{\underset{\_}{Y}}_{k}^{0} = {{\underset{\_}{Y}}_{k}^{0} + {y_{k}{\underset{\underset{\_}{\_}}{E}}_{k}{\underset{\_}{Y}}_{k}^{0}}}} \end{matrix}\quad} \end{matrix}\quad$ $\frac{N^{2} - N - 1}{N}$ $\frac{N - 1}{N}$ Durbin's recursion $\begin{matrix} {{{{Calculate}\quad{at}\quad{end}\quad{of}\quad n} \in \left\lbrack {{kn},{\left( {k + 1} \right)N}} \right)}:} \\ {\rho^{0} = {\rho^{0}/\left\lbrack {1 - \left( y_{N - 2}^{0} \right)^{2}} \right\rbrack}} \end{matrix}\quad$ 1/N 1/N Find ρ⁰ ${\underset{\_}{ɛ}(n)} = {{{\rho e}(n)}\begin{bmatrix} 1 \\ {\underset{\_}{Y}}_{N - 1} \end{bmatrix}}$ N RATCHET ${\underset{\_}{\eta}(n)} = {\begin{bmatrix} 0 \\ {\overset{\_}{\underset{\_}{\eta}}\left( {n - 1} \right)} \end{bmatrix} + {\underset{\_}{ɛ}(n)}}$ Total: 2L + 5N − 2 1 Note:

-   -   ξ(n) is defined in Eq.(4);     -   the N vector R=[δ+r₀ r₁ . . . r_(N−1)]^(T ()73) is the left-most         column of R(n), the rest of which does not need to be stored;     -   {tilde over (R)} is an N−1 vector consisting of the N−1 lower         elements of R;     -   {overscore (η)}(n) is an N−1 vector consisting of the N−1 upper         elements of the N vector η(n);     -   the purpose of the three boxes marked “Durbin's recursion,”         “Find □⁰,” and “RATCHET,” respectively, is to find ε(n)=R ⁻¹         (n)e(n);     -   the vector e(n) does not need to be explicitly calculated; and         $\begin{matrix}         {{\underset{\_}{Y}}_{N - 1}^{0} = \begin{bmatrix}         {\underset{\_}{Y}}_{N - 2}^{0} \\         y_{N - 2}^{0}         \end{bmatrix}} & (74)         \end{matrix}$

Stability of the RATCHET filter may be called into question since the projected error vector ε _(N) (n+1) partially based on the projected error vector ε _(N) (n); therefore, numerical errors could potentially propagate and accumulate in the sequence of solutions. This should not be an issue because, in each sampling interval n; numerical errors in ε _(N)(n) and therefore in Z _(N−1), if any, are scaled down by a factor (1−α) [0≦(1−α)≦1] before being used to construct ε _(N) (n+1); and even if α=0 so that (1−α)=1, i.e., the numerical errors are not attenuated over time, the errors are still shifted one position downwards—towards the end of the vector Z _(N−)1—in each sampling interval; therefore, they will eventually be discarded and no longer impact subsequent solutions—no matter what the value of (1−α) is.

Simulation results support the above argument. That is, the FAP featuring the RATCHET method stays stable. Some preliminary simulations have been performed on the two FAP filters presented herein at their respective full and reduced rates. It has been observed so far that both filters stay stable for the entire course of each test case that was run, and in terms of convergence speed, RATCHET FAP is slightly inferior to LDL^(T) FAP, and the respective reduced-rate versions are slightly worse than their full-rate counterparts. However, both the LDL^(T) FAP and RATCHET FAP, at full and reduced rates, converge much faster than an NLMS adaptive filter.

A comparison between the FAP filters of the prior art and our present filters is shown in Table 4. TABLE 4 Comparison between various adaptive filters Conver- Relax- Complexity Algorithm gence ability MAC in excess of 2L DIV Comment Non- NLMS Slow Not 2 1 Work horse FAP RLS Fastest Applicable Very High Numerical Issues FAP Prior Original FAP Fast Yes 20N 5 Art Levinson-Durbin FAP 2N² + 3N − 2 N Approximate CGFAP No 2N² + 9N + 1 1 Only for large GSFAP N²/p + (5 − 1/p)N − 1, 1 ≦ p ≦ 5 1 step size α Invented LDL^(T) Full rate Yes N³/6 + 2N² + 17N/6 − 2 N Exact solution FAP Reduced Rate 7N²/6 + 5N − 3 1 Approximate RATCHET Full rate N² + 6N − 4 N FAP Reduced General 8N − 5 1 Rate Non- No 5N − 2 1 Approximate and relaxed only for large step size α

The complexity figures in Table 4 are plotted in FIG. 3, where each DIV is counted as 25 MACs, because it takes approximately 20 to 30 cycles for a typical commercial DSP to perform a DIV while it takes only 1 cycle for it to do a MAC. In order to compare the GSFAP and RATCHET FAP clearly, the Y-scale of a portion of FIG. 3 is enlarged and shown in FIG. 4.

The advantages of the present invention will be apparent to those of skill in the art. The RATCHET FAP at the reduced rate provides not only a stable filter, but with complexity in the order of O(N), while other stable FAP filters have a complexity of the order of O(N²). The reduced rate RATCHET FAP is also simpler than previously proposed FAP filters. With the projection order N between 4 and 18, a range particularly suitable for voice applications, the reduced rate RATCHET FAP has a similar complexity to a GSFAP filter with p=5. However, the reduced rate RATCHET FAP can have a normalized step size in the range of α□[0,1], while GSFAP requires a step size at, or close to, unity. With a stationary input x(n), the reduced rate RATCHET FAP is guaranteed to arrive at the solution to the Toeplitz system in N sampling intervals, because it is recursive. By contrast the GSFAP filter can only complete one complete iteration every psampling intervals, and it may take quite a number of iterations for it to reach the solution. This means that, for a nonstationary input signal x(n), the tracking capability of RATCHET FAP is superior to GSFAP.

While both of the two filtering methods described herein are robust and stable, the LDL^(T) factorization method can provide an exact solution at an acceptable complexity (the existing stable approaches are all approximate). However, the LDL^(T) FAP method at the full rate is likely only suitable for cases with small N and where an exact solution is required. Although the RATCHET FAP method is sub-optimal, it is very simple to implement.

Note that although the preceding description is made in the context of echo cancellation, the results are also applicable to other adaptive filtering applications. All data and parameters involved are assumed to be real-valued, as opposed to be more generally complex. This is for simplicity and should not prevent the discussions of the prior art and the invention from being extended to cases involving complex numbers. It is expected that adaptive filters using the LDL^(T) FAP and RATCHET FAP methods are particularly applicable to telecommunication and other applications of adaptive filtering.

The above-described embodiments of the present invention are intended to be examples only. Alterations, modifications and variations may be effected to the particular embodiments by those of skill in the art without departing from the scope of the invention, which is defined solely by the claims appended hereto.

Appendix A: LDL^(T) Factorization and System Solving

The goal is to derive the LDL^(T) factorization algorithm to find L and D where R=LDL ^(T)  (75) i.e., Eq. (15).

In Eq. (75), L is a unit lower triangular matrix, with all elements on the main diagonal being unity, i.e., $\begin{matrix} {{\underset{\_}{\underset{\_}{L}} = \begin{bmatrix} 1 & \quad & \quad & \quad & \quad & \quad & 0 \\ l_{10} & 1 & \quad & \quad & \quad & \quad & \quad \\ l_{20} & l_{21} & 1 & \quad & \quad & \quad & \quad \\ l_{30} & l_{31} & l_{32} & 1 & \quad & \quad & \quad \\ \vdots & \vdots & \vdots & \vdots & ⋰ & \quad & \quad \\ l_{{N - 2},0} & l_{{N - 2},1} & l_{{N - 2},2} & l_{{N - 2},3} & \cdots & 1 & \quad \\ l_{{N - 1},0} & l_{{N - 1},1} & l_{{N - 1},2} & l_{{N - 1},3} & \cdots & l_{{N - 1},{N - 2}} & 1 \end{bmatrix}}{and}{\underset{\_}{\underset{\_}{D}} = \begin{bmatrix} d_{0} & \quad & \quad & \quad & 0 \\ \quad & d_{1} & \quad & \quad & \quad \\ \quad & \quad & d_{2} & \quad & \quad \\ \quad & \quad & \quad & ⋰ & \quad \\ 0 & \quad & \quad & \quad & d_{N - 1} \end{bmatrix}}} & (76) \end{matrix}$ is a diagonal matrix. Equation (75) can be written as R=L ( DL ^(T))  (77) An expanded form of Eq. (77) is $\begin{matrix} {\begin{bmatrix} r_{00} & r_{01} & \cdots & r_{0,{N - 1}} \\ r_{10} & r_{11} & \cdots & r_{1,{N - 1}} \\ \vdots & \vdots & \quad & \vdots \\ r_{{N - 1},0} & r_{{N - 1},1} & \cdots & r_{{N - 1},{N - 1}} \end{bmatrix} = {\begin{bmatrix} 1 & \quad & \quad & \quad & \quad & \quad & 0 \\ l_{10} & 1 & \quad & \quad & \quad & \quad & \quad \\ l_{20} & l_{21} & 1 & \quad & \quad & \quad & \quad \\ l_{30} & l_{31} & l_{32} & 1 & \quad & \quad & \quad \\ \vdots & \vdots & \vdots & \vdots & ⋰ & \quad & \quad \\ l_{{N - 2},0} & l_{{N - 2},1} & l_{{N - 2},2} & l_{{N - 2},3} & \cdots & 1 & \quad \\ l_{{N - 1},0} & l_{{N - 1},1} & l_{{N - 1},2} & l_{{N - 1},3} & \cdots & l_{{N - 1},{N - 2}} & 1 \end{bmatrix} \cdot \begin{bmatrix} d_{0} & {I_{10}d_{0}} & {I_{20}d_{0}} & {I_{30}d_{0}} & \cdots & {I_{{N - 2},0}d_{0}} & {I_{{N -},0}d_{0}} \\ \quad & d_{1} & {I_{21}d_{1}} & {I_{31}d_{1}} & \cdots & {I_{{N - 2},1}d_{1}} & {I_{{N -},1}d_{1}} \\ \quad & \quad & d_{2} & {I_{32}d_{2}} & \cdots & {I_{{N - 2},2}d_{2}} & {I_{{N - 1},2}d_{2}} \\ \quad & \quad & \quad & d_{3} & \cdots & {I_{{N - 2},3}d_{3}} & {I_{{N - 1},3}d_{3}} \\ \quad & \quad & \quad & \quad & ⋰ & \vdots & \vdots \\ \quad & \quad & \quad & \quad & \quad & d_{N - 2} & {I_{{N - 1},{N - 2}}d_{N - 2}} \\ 0 & \quad & \quad & \quad & \quad & \quad & d_{N - 1} \end{bmatrix}}} & (78) \end{matrix}$ Looking at Eq. (78), we begin by finding d₀ and column 0 of L. Since r₀₀=d₀ r _(k0) =l _(k) d ₀ , ∀kε□1, N−1]  (79) d₀ and column 0 of L are found as d₀=r₀₀ l _(k0) =r _(k0) /d ₀ , ∀kε[1,N−1]  (80) Now assuming that, for a certain iε(1, N−2), {d₀, d₁, . . . , d_(i−1)} and columns 0 through i-1 of L have been found, we have $\begin{matrix} {{r_{ii} = {\left. {{\sum\limits_{j = 0}^{i - 1}\quad{l_{ij}v_{ij}}} + d_{i}}\Rightarrow d_{i} \right. = {r_{ii} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{ij}v_{ij}}}}}}{where}} & (81) \\ {{{v_{ij} = {l_{ij}d_{ij}}},{0 \leq j \leq {i - 1}}}{Furthermore}} & (82) \\ {{r_{ki} = {\left. {{\sum\limits_{j = 0}^{i - 1}\quad{l_{kj}v_{ij}}} + {l_{ki}d_{i}}}\Rightarrow l_{ki} \right. = {\frac{1}{d_{i}}\left( {r_{ki} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{kj}v_{ij}}}} \right)}}},{\forall{k \in \left\lbrack {{i + 1},{N - 1}} \right\rbrack}}} & (83) \end{matrix}$ Thus, starting with the quantities in Eq. (80), recursive use of Eqs. (81) and (83) for i=1, 2, . . . , N−2, and use of Eq. (81) for i=N−1 will find all elements of D and all columns of L. The LDL^(T) factorization studied above can be summarized as $\begin{matrix} {{{i\quad = 0},1,\ldots\quad,{N - {1\text{:}}}}{d_{i} = r_{ii}}{{{If}\quad i} > 0}{{j = 0},1,\ldots\quad,{i - {1\text{:}}}}{v_{j} = {l_{ij}d_{j}}}{d_{i} = {d_{i} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{ij}v_{j}}}}}{{{If}\quad i} < {N - 1}}{{k = {1 + 1}},{i + 2},\ldots\quad,{N - {1\text{:}}}}{{{If}\quad i} = 0}{l_{k\quad 0} = {r_{k\quad 0}/d_{0}}}{{Else}\quad\left( {i > 0} \right)}{l_{ki} = {\frac{1}{d_{i}}\left( {r_{ki} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{kj}v_{j}}}} \right)}}} & (84) \end{matrix}$ where {84 ₀, ν₁, . . . , ν_(N−2)} are temporary storage locations. For computational efficiency, Eq. (84) can be implemented as: $\begin{matrix} {{i = {0\text{:}}}{d_{0} = r_{00}}{a_{0} = {1/d_{0}}}{{k = 1},2,\ldots\quad,{N - {1\text{:}}}}{l_{k\quad 0} = {a_{0}r_{k\quad 0}}}{{i = 1},2,\ldots\quad,{N - {2\text{:}}}}{{j = 0},1,\ldots\quad,{i - {1\text{:}}}}{v_{j} = {l_{ij}d_{j}}}{d_{i} = {r_{ii} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{ij}v_{j}}}}}{a_{i} = {1/d_{i}}}{{k = {i + 1}},{i + 2},\ldots\quad,{N - {1\text{:}}}}{l_{ki} = {a_{i}\left( {r_{ki} - {\sum\limits_{j = 0}^{i - 1}\quad{l_{kj}v_{j}}}} \right)}}{i = {N - {1\text{:}}}}{{j = 0},1,\ldots\quad,{N - {2\text{:}}}}{v_{j} = {l_{{N - 1},j}d_{j}}}{d_{N - 1} = {r_{{N - 1},{N - 1}} - {\sum\limits_{j = 0}^{N - 2}\quad{l_{{N - 1},j}v_{j}}}}}{a_{N - 1} = {1/d_{N - 1}}}} & (85) \end{matrix}$ Note that {a₁, a₂, . . . , a_(N−1)} are saved for later use in Eq. (90), and the last DIV is performed solely for that purpose. Total numbers of MACs and DIVs for the above LDL^(T) factorization are $\begin{matrix} {\begin{matrix} {N_{{MAC},F} = {\left( {N - 1} \right) + {2{\sum\limits_{i = 1}^{N - 2}\quad i}} + {\sum\limits_{i = 1}^{N - 2}\quad{\left( {N - i - 1} \right)\left( {i + 1} \right)}} + {2\left( {N - 1} \right)}}} \\ {= {\frac{N^{3}}{6} + N^{2} - \frac{7N}{6}}} \end{matrix}{and}} & (86) \\ {N_{{DIV},F} = N} & (87) \end{matrix}$ respectively. With L and D found, Eq (17) on page 14, i.e., L ε ^((L))=e, can be solved by Forward Substitution $\begin{matrix} {{{i = 0},1,\ldots\quad,{N - 2}}{ɛ_{i}^{(L)} = e_{i}}{{j = {i + 1}},{i + 2},\ldots\quad,{N - 1}}{e_{j} = {e_{j} - {l_{ji}ɛ_{i}^{(L)}}}}{ɛ_{N - 1}^{(L)} = e_{N - 1}}} & (88) \end{matrix}$ Total number of MACs for the above forward substitution algorithm is $\begin{matrix} {N_{{MAC},{FS}} = {{\sum\limits_{i = 0}^{N - 2}\quad\left( {N - i - 1} \right)} = {\frac{N}{2}\left( {N - 1} \right)}}} & (89) \end{matrix}$ and there is no DIV operation involved in Eq. (88), i.e., N_(DIV,FS)=0. Next, Eq. (18), i.e. D ε ^((D))=e ^((L)), can be solved by Scaling i=0,1, . . . ,N−1 ε_(i) ^((D))=a_(i)ε_(i) ^((L))  (90) where {a₁, a₂, . . . , a_(N−1)} are obtained from Eq. (85). Total number of MACs for the above scaling algorithm is N_(MAC,S)=N  (91) and there is no DIV operation involved in Eq. (90), i.e., N_(DIV,S)=0. Finally, Eq. (19), i.e. L ^(T) ε=e ^((D)) is solved by Back Substitution $\begin{matrix} {{{i = {N - 1}},{N - 2},\ldots\quad,{1\text{:}}}{ɛ_{i} = ɛ_{i}^{(D)}}{{j = {i - 1}},{i - 2},\ldots\quad,{0\text{:}}}{ɛ_{j}^{(D)} = {ɛ_{j}^{(D)} - {l_{ij}ɛ_{i}}}}{ɛ_{0} = ɛ_{0}^{(D)}}} & (92) \end{matrix}$ Total number of MACs for the above back substitution algorithm is $\begin{matrix} {N_{{MAC},{BS}} = {{\sum\limits_{i = 1}^{N - 1}\quad i} = {\frac{N}{2}\left( {N - 1} \right)}}} & (93) \end{matrix}$ and there is no DIV operation involved in Eq. (92), i.e., N_(DIV,BS)=0.

To summarize, the LDL^(T) factorization method to solve Eq. (9) on is expressed in Eqs. (85), (88), (90), and (92). The total numbers of MACs and DIVs needed are $\begin{matrix} {\begin{matrix} {N_{{MAC},{LDL}} = {N_{{MAC},F} + N_{{MAC},{FS}} + N_{{MAC},S} + N_{{MAC},{BS}}}} \\ {= {\frac{N^{3}}{6} + N^{2} - \frac{7N}{6} + {\frac{N}{2}\left( {N - 1} \right)} + N + {\frac{N}{2}\left( {N - 1} \right)}}} \\ {= {\frac{N^{3}}{6} + {2\quad N^{2}} - \frac{7\quad N}{6}}} \end{matrix}{and}} & (94) \\ \begin{matrix} {N_{{DIV},{LDL}} = {N_{{DIV},F} + N_{{DIV},{FS}} + N_{{DIV},S} + N_{{DIV},{BS}}}} \\ {= {N_{{DIV},F} + 0 + 0 + 0}} \\ {= N} \end{matrix} & (95) \end{matrix}$ respectively. Appendix B: Durbin's Recursion for Yule-Walker Systems

To follow the derivations in this section, a subscript denotes the dimension of a matrix or vector it belongs to, as also explained at the beginning of this document.

The Durbin's method recursively solves an M-th order Yule-Walker system $\begin{matrix} {{{\underset{\_}{\underset{\_}{R}}}_{M} = {{\underset{\_}{Y}}_{M} = {- {\underset{\_}{R}}_{M}}}}{where}} & (96) \\ {{\underset{\_}{\underset{\_}{R}}}_{M} = \begin{bmatrix} r_{0} & r_{1} & r_{2} & \ldots & r_{M - 2} & r_{M - 1} \\ r_{1} & r_{0} & r_{1} & \ldots & r_{M - 3} & r_{M - 2} \\ r_{2} & r_{1} & r_{0} & \ldots & r_{M - 4} & r_{M - 3} \\ \vdots & \vdots & \vdots & \quad & \vdots & \vdots \\ r_{M - 2} & r_{M - 3} & r_{M - 4} & \ldots & r_{0} & r_{1} \\ r_{M - 1} & r_{M - 2} & r_{M - 3} & \ldots & r_{1} & r_{0} \end{bmatrix}} & (97) \end{matrix}$ is and M-th order symmetric Toeplitz matrix, and $\begin{matrix} {{\underset{\_}{Y}}_{M} \equiv {\begin{bmatrix} y_{0} \\ y_{1} \\ \vdots \\ y_{M - 1} \end{bmatrix}\quad{and}\quad{\underset{\_}{R}}_{M}} \equiv \begin{bmatrix} r_{1} \\ r_{2} \\ \vdots \\ r_{M} \end{bmatrix}} & (98) \end{matrix}$ are M-dimensional solution and given vectors, respectively. Note that, with suffixing, R _(M) is a one-position up-shifted version of the left-most column of R _(M). Supposing that the k-th (1≦k≦M−1) order Yule-Walker system $\begin{matrix} {{{{\underset{\_}{\underset{\_}{R}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}} = {- {\underset{\_}{R}}_{k}}}{where}} & (99) \\ {{\underset{\_}{Y}}_{k}^{(k)} \equiv \begin{bmatrix} y_{0}^{(k)} \\ y_{1}^{(k)} \\ \vdots \\ y_{k - 1}^{(k)} \end{bmatrix}} & (100) \end{matrix}$ has been solved, we try to solve the (k+1)-th order system $\begin{matrix} {{{\underset{\_}{\underset{\_}{R}}}_{k + 1}{\underset{\_}{Y}}_{k + 1}^{({k + 1})}} = {- {\underset{\_}{R}}_{k + 1}}} & (101) \end{matrix}$ which can be expressed as $\begin{matrix} {{\begin{bmatrix} {\underset{\_}{\underset{\_}{R}}}_{k} & {{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{R}}_{k}} \\ {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{\underset{\_}{E}}}_{k}} & r_{0} \end{bmatrix}\begin{bmatrix} {\underset{\_}{Y}}_{k}^{({k + 1})} \\ y_{k}^{({k + 1})} \end{bmatrix}} = {- \begin{bmatrix} {\underset{\_}{R}}_{k} \\ r_{k + 1} \end{bmatrix}}} & (102) \end{matrix}$ where E _(k) is a k-th order exchange matrix, and $\begin{matrix} {{\underset{\_}{Y}}_{k}^{({k + 1})} = \begin{bmatrix} y_{0}^{({k + 1})} \\ y_{1}^{({k + 1})} \\ \vdots \\ y_{k - 1}^{({k + 1})} \end{bmatrix}} & (103) \end{matrix}$ Taking into account Eq. (99), we can expand Eq. (102) into R _(k) Y _(k) ^((k+1)) y _(k) ^((k+1)) E _(k) R _(k) =−R _(k) =R _(k) Y _(k) ^((k))  (104) and R _(k) ^(T) E _(k) Y _(k) ^((k+1)) +r ₀ y _(k) ^((k+1)) =−r _(k+1)  (105) From Eq. (104), considering that R _(k) ⁻¹ is persymmetric, (therefore E A=A E) and using Eq. (99), one can derive $\begin{matrix} \begin{matrix} {{\underset{\_}{Y}}_{k}^{({k + 1})} = {{{\underset{\_}{Y}}_{k}^{(k)} - {y_{k}^{({k + 1})}{\underset{\_}{\underset{\_}{R}}}_{k}^{- 1}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{R}}_{k}}} = {{\underset{\_}{Y}}_{k}^{(k)} - {y_{k}^{({k + 1})}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{\underset{\_}{R}}}_{k}^{- 1}{\underset{\_}{R}}_{k}}}}} \\ {= {{\underset{\_}{Y}}_{k}^{(k)} + {y_{k}^{({k + 1})}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}}}} \end{matrix} & (106) \end{matrix}$ Using Eqs. (106) and the fact that a k-th order exchange matrix E _(k) is a mirror image of the k-th order identity matrix I _(k) and thus E _(k) =E _(k) ^(T) ,E _(k) E _(k) =I _(k)  (107) Eq. (104) can be turned into $\begin{matrix} {\begin{matrix} {{r_{0}y_{k}^{({k + 1})}} = {{{- r_{k + 1}} - {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{({k + 1})}}} = {{- r_{k + 1}} - {{\underset{\_}{R}}_{k}^{T}{{\underset{\_}{\underset{\_}{E}}}_{k}\left\lbrack {{\underset{\_}{Y}}_{k}^{({k + 1})}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}} \right\rbrack}}}}} \\ {= {{- r_{k + 1}} - {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{({k + 1})}} - {y_{k}^{({k + 1})}{\underset{\_}{R}}_{k}^{T}{\underset{\_}{Y}}_{k}^{(k)}}}} \end{matrix}{or}} & (108) \\ {y_{k}^{({k + 1})} = {- \frac{r_{k + 1} + {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}}}{r_{0} + {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{Y}}_{k}^{(k)}}}}} & (109) \end{matrix}$ Equations (106) and (109) form the solution to the (k+1)-th order Yule-Walker system Eq. (101). To simplify the computation, we define $\begin{matrix} {\rho_{k} \equiv \frac{1}{r_{0} + {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{Y}}_{k}^{(k)}}}} & (110) \end{matrix}$ Using Eqs. (106) and (109), (110) can be turned into $\begin{matrix} {\begin{matrix} {\frac{1}{\rho_{k}} = {{r_{0} + {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{Y}}_{k}^{(k)}}} = {r_{0} + {\left\lbrack {{\underset{\_}{R}}_{k - 1}^{T}\quad r_{k}} \right\rbrack\begin{bmatrix} {{\underset{\_}{Y}}_{k - 1}^{({k - 1})} + {y_{k - 1}^{(k)}{\underset{\_}{\underset{\_}{E}}}_{k - 1}{\underset{\_}{Y}}_{k - 1}^{({k - 1})}}} \\ y_{k - 1}^{(k)} \end{bmatrix}}}}} \\ {= {r_{0} + {{\underset{\_}{R}}_{k - 1}^{T}{\underset{\_}{Y}}_{k - 1}^{({k - 1})}} + {y_{k - 1}^{(k)}{\underset{\_}{R}}_{k - 1}^{T}{\underset{\_}{\underset{\_}{E}}}_{k - 1}{\underset{\_}{Y}}_{k - 1}^{({k - 1})}} + {r_{k}y_{k - 1}^{(k)}}}} \\ {= {\frac{1}{\rho_{k - 1}} + {y_{k - 1}^{(k)}\left\lbrack {r_{k} + {{\underset{\_}{R}}_{k - 1}^{T}{\underset{\_}{\underset{\_}{E}}}_{k - 1}{\underset{\_}{Y}}_{k - 1}^{({k - 1})}}} \right\rbrack}}} \\ {= {\frac{1}{\rho_{k - 1}} - {\left\lbrack {r_{0} + {{\underset{\_}{R}}_{k - 1}^{T}{\underset{\_}{Y}}_{k - 1}^{({k - 1})}}} \right\rbrack\left\lbrack y_{k - 1}^{(k)} \right\rbrack}^{2}}} \\ {= {\frac{1}{\rho_{k - 1}}\left\{ {1 - \left\lbrack y_{k - 1}^{(k)} \right\rbrack^{2}} \right\}}} \end{matrix}{or}} & (111) \\ {\rho_{k} = \frac{\rho_{k - 1}}{1 - \left\lbrack y_{k - 1}^{(k)} \right\rbrack^{2}}} & (112) \end{matrix}$ Combining Eqs. (106), (109), and (112), we can summarize the Durbin's recursive algorithm to solve Eq. (96) as the following $\begin{matrix} {{{\rho = \frac{1}{r_{0}}};{y_{0}^{(l)} = {{- \rho_{0}}r_{1}}}}{{k = 1},2,\ldots\quad,{M - {1\text{:}}}}{\rho_{k} = \frac{\rho_{k - 1}}{1 - \left\lbrack y_{k - 1}^{(k)} \right\rbrack^{2}}}{y_{k}^{({k + 1})} = {- {\rho_{k}\left\lbrack {r_{k + 1} + {{\underset{\_}{R}}_{k}^{T}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}}} \right\rbrack}}}{{\underset{\_}{Y}}_{k}^{({k + 1})} = {{\underset{\_}{Y}}_{k}^{(k)} + {y_{k}^{({k + 1})}{\underset{\_}{\underset{\_}{E}}}_{k}{\underset{\_}{Y}}_{k}^{(k)}}}}{{\underset{\_}{Y}}_{M} = \begin{bmatrix} {\underset{\_}{Y}}_{M - 1}^{(M)} \\ y_{M - 1}^{(M)} \end{bmatrix}}} & (113) \end{matrix}$ An implementation of Eq. (113) is $\begin{matrix} {{{\rho = \frac{1}{r_{0}}};{y_{0} = {{- \rho}\quad r_{1}}}}{{k = 1},2,\ldots\quad,{M - {1\text{:}}}}{\rho = \frac{\rho}{1 - y_{k - 1}^{2}}}{y_{k} = {- {\rho\left( {r_{k + 1} + {\sum\limits_{j = 1}^{k}\quad{r_{j}y_{k - j}}}} \right)}}}{{j = 0},1,\ldots\quad,{k - {1\text{:}}}}{z_{j} = {y_{j} + {y_{k}y_{k - t - j}}}}{{j = 0},1,\ldots\quad,{k - {1\text{:}}}}{y_{j} = z_{j}}} & (114) \end{matrix}$ where {z₀, z₁, . . . , z_(M−2)} are temporary storage elements. Based on Eq. (114), the total numbers of MACs and DIVs needed for recursively solving an M-th order Yule-Walker system are $\begin{matrix} {{N_{{MAC},{YW}} = {{1 + {\sum\limits_{k = 1}^{M - 1}\quad\left( {k + k + 1 + 1} \right)}} = {M^{2} + M - 1}}}{and}} & (115) \\ {N_{{DIV},{YW}} = M} & (116) \end{matrix}$ respectively. With a system of the order M=N−1, these figures become N _(MAC,YW)=(N−1)²+(N−1)−1=N ² −N−1  (117) and N _(DIV,YW) =N−1  (118) respectively. 

1. A method of adaptive filtering using a fast affine projection adaptive filter, comprising steps of: (a) initializing adaptive filter coefficients of the filter; (b) updating the adaptive filter coefficients by: (i) setting a normalized step size; (ii) determining autocorrelation matrix coefficients of an autocorrelation matrix R _(N) from a reference input signal; (iii) directly determining a projected error vector ε _(N)(n+1) by solving an N-th order positive-definite system of linear equations R _(N) ε(n+1)=e _(N) (n+1) using a backward recursion, followed by a forward recursion, on a known projected error vector ε _(N) (n), where e _(N) (n+1) is a prefixed, one position down shifted version of the current output signal vector e _(N) (n) scaled in accordance with the normalized step size; (iv) updating the adaptive filter coefficients in accordance with coefficients of the projected error vector; and (c) repeating step (b) as required.
 2. The method of claim 1, wherein solving the N-th order positive-definite system of linear equations includes solving an (N−1)-th order Yule-Walker system.
 3. The method of claim 2, wherein solving the Yule-Walker system is repeated at a reduced rate.
 4. The method of claim 3, wherein the Yule-Walker system is solved once in every N sampling intervals.
 5. A method of claim 1, wherein determining the auto-correlation matrix coefficients is performed recursively.
 6. The method of claim 1, wherein the normalized step size is greater than or equal to 0 and less than or equal to
 1. 7. The method of claim 1, wherein when the normalized step size is substantially equal to 1, the backward and forward recursion steps can be eliminated.
 8. The method of claim 1, wherein the steps are performed with complex valued numbers.
 9. The method of claim 1, the method being used for echo cancellation.
 10. The method of claim 1, the method being used for noise cancellation.
 11. The method of claim 1, the method being used for channel equalization.
 12. A method of adaptive filtering using a fast affine projection adaptive filter, comprising steps of: (a) initializing adaptive filter coefficients of the filter; (b) updating the adaptive filter coefficients by: (i) determining autocorrelation matrix coefficients of an autocorrelation matrix R _(N) from a reference input signal; (ii) directly determining a projected error vector ε _(N) (n) by solving an N-th order positive-definite system of linear equations R _(N) ε(n)=e _(N) (n) using an LDL^(T) factorization of the autocorrelation matrix and solving the system of linear equations by forward substitution, scaling and back substitution; (iii) updating the adaptive filter coefficients in accordance with the projected error vector; and (c) repeating step (b) as required.
 13. The method of claim 12, wherein the LDL^(T) factorization is repeated at a reduced rate.
 14. The method of claim 13, wherein the LDL^(T) factorization is repeated once in every N sampling intervals.
 15. A method of claim 12, wherein determining the auto-correlation matrix coefficients is performed recursively.
 16. The method of claim 12, wherein the normalized step size is greater than or equal to 0 and less than or equal to
 1. 17. The method of claim 12, wherein the steps are performed with complex value numbers.
 18. The method of claim 12, the method being used for echo cancellation.
 19. The method of claim 12, the method being used for noise cancellation.
 20. The method of claim 12, the method being used for channel equalization. 